<template>
	<view class="login_before_container">
		<view class="item">
			<uni-icons type="contact-filled" size="100" color="#AFAFAF"></uni-icons>
			<button type="default" @click="goLogin">一键登录</button>
			<view class="text">登录后尽享更多权益</view>
		</view>
	</view>
</template>

<script>
	// 引入mapMutations辅助函数
	import {mapMutations} from 'vuex';
	// 引入发送post请求的接口
	import {token_data} from '@/API/user_request.js'
	export default {
		name:"login-before",
		data() {
			return {
				
			};
		},
		methods:{
			// 展开users模块下的setToken、setuserInfo
			...mapMutations('users',['setToken','setuserInfo']),
			// goLogin用来获取用户信息
			goLogin(){
				// 因为在uni.getUserProfile里this指向改变了 需要提前存储一下this
				const that = this;
				// 用来获取用户信息
				uni.getUserProfile({
					// desc后的值必须是固定的 不可随意更改
					desc:"获取你的昵称、头像、地区及性别",
					// success成功后的回调函数
					success(info){
						console.log(info);
						// setuserInfo把用户信息存储起来
						that.setuserInfo(info.userInfo);
						// 执行getToken方法 将info穿进去
						that.getToken(info);
					},
					// 失败时的回调函数
					fail(err){
						console.log(err);
					}
				})
			},
			// 获取token信息
			getToken(info){
				// 存储this
				let That = this;
				// uni.login是一个客户端API，统一封装了各个平台的各种常见的登录方式，包括App手机号一键登陆、三方登录（微信、微博、QQ、Apple、google、facebook）、各家小程序内置登录。
				const result = uni.login({
					// provider：登录服务提供商，通过 uni.getProvider 获取，如果不设置则弹出登录列表选择界面
					provider:'weixin',
					// 成功时的回调函数
					success: async (loginRes)=>{
						// errMsg: "login:ok", code: "013CpXZv3IIii038Wz2w3UnMQl3CpXZt"
						console.log(loginRes);
						// query为发送post请求的参数
						const query = {
							encryptedData:info.encryptedData,
							rawData:info.rawData,
							iv:info.iv,
							signature:info.signature,
							code:loginRes.code
						};
						console.log(query);
						// 发送post请求
						const user_result = await token_data(query);
						console.log(user_result);
						// 如果发送成功后 存储token
						 if(user_result.errMsg == "request:ok"){
							 // 因为这个服务器不返回用户token所有 token为我们自己写的固定值
							let token = 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOjIzLCJpYXQiOjE1NjQ3MzAwNzksImV4cCI6MTAwMTU2NDczMDA3OH0.YPt-XeLnjV-_1ITaXGY2FhxmCe4NvXuRnRB8OMCfnPo';
							 // 存储token
							 That.setToken(token);
						 }
					},
					fail(err){
						console.log(err);
						return uni.$showMsg('登陆失败');
					}
				})
			}
		}
	}
</script>

<style lang="scss" scoped>
.login_before_container{
	width: 90%;
	height: 500rpx;
	display: flex;
	justify-content: center;
	align-items: center;
	flex-direction: column;
	margin: 150rpx auto 0;
	.item{
		width: 100%;
		height: 100%;
		display: flex;
		justify-content: center;
		align-items: center;
		flex-direction: column;
		button{
			background-color: #c00000;
			width: 100%;
			margin: auto;
			border-radius: 50rpx;
			color: white;
			text-align: center;
		}
		.text{
			width: 100%;
			color: #AFAFAF;
			font-size: 30rpx;
			text-align: center;
		}
	}
}
</style>
